স্ট্রিং এবং অ্যারের মধ্যে পার্থক্য (Difference Between Strings and Arrays in Fortran)
ফোরট্রান-এ স্ট্রিং এবং অ্যারে দুটি ভিন্ন ধরনের ডেটা স্ট্রাকচার, এবং তাদের ব্যবহারের উদ্দেশ্য ও বৈশিষ্ট্যও আলাদা। নিচে স্ট্রিং এবং অ্যারের মধ্যে পার্থক্যগুলো আলোচনা করা হলো:
১. ডেটা টাইপ
স্ট্রিং:
- ফোরট্রান-এ স্ট্রিং একটি বিশেষ ধরনের ক্যারেক্টার অ্যারে, যা একাধিক ক্যারেক্টার ধারণ করতে পারে।
- এটি
characterডেটা টাইপের অংশ, এবং প্রতিটি স্ট্রিং একটি নির্দিষ্ট দৈর্ঘ্যের ক্যারেক্টারগুলির সমষ্টি হতে পারে।
উদাহরণ:
character(len=20) :: name name = "Fortran Programming"অ্যারে:
- অ্যারে একটি ডেটা স্ট্রাকচার যা একই ধরনের একাধিক উপাদান ধারণ করতে পারে। অ্যারেতে
integer,real,logical,characterইত্যাদি বিভিন্ন ডেটা টাইপের উপাদান থাকতে পারে। - অ্যারেটি সাধারণত এক বা একাধিক মাত্রায় হতে পারে (যেমন এক-মাত্রিক, দুই-মাত্রিক অ্যারে)।
উদাহরণ:
integer, dimension(5) :: numbers numbers = (/1, 2, 3, 4, 5/)- অ্যারে একটি ডেটা স্ট্রাকচার যা একই ধরনের একাধিক উপাদান ধারণ করতে পারে। অ্যারেতে
২. ডেটা স্টোরেজ এবং ব্যবস্থাপনা
স্ট্রিং:
- স্ট্রিংয়ের জন্য ফোরট্রান
character(len=n)ফর্ম্যাট ব্যবহার করে একটি নির্দিষ্ট দৈর্ঘ্যের ক্যারেক্টার স্টোর করে। - স্ট্রিংয়ের দৈর্ঘ্য এবং এর মধ্যে থাকা চরিত্রের সংখ্যা নির্দিষ্ট থাকে, তবে এটি ভিন্ন হতে পারে (যেমন
character(len=30)বাcharacter(len=50))।
উদাহরণ:
character(len=10) :: word word = "Hello"- স্ট্রিংয়ের জন্য ফোরট্রান
অ্যারে:
- অ্যারে এক বা একাধিক ডেটা টাইপের উপাদান ধারণ করতে পারে এবং এর আকার রানটাইমের আগে নির্ধারণ করা হয় (যদি তা ডাইনামিক অ্যারে না হয়)।
- অ্যারের উপাদানগুলি একই ডেটা টাইপের হতে হবে (যেমন সব উপাদান
integerবাrealহতে পারে)।
উদাহরণ:
real, dimension(3) :: numbers numbers = (/1.1, 2.2, 3.3/)
৩. ইনডেক্সিং
স্ট্রিং:
- স্ট্রিংয়ের প্রতিটি চরিত্র একটি নির্দিষ্ট অবস্থানে (ইনডেক্সে) থাকে, এবং ফোরট্রান স্ট্রিংয়ের ক্যারেক্টারগুলি ১-ভিত্তিক ইনডেক্স ব্যবহার করে অ্যাক্সেস করা হয়।
- স্ট্রিংয়ের জন্য ইনডেক্সের সীমা হলো ১ থেকে
len(string)।
উদাহরণ:
character(len=5) :: name name = "Fortran" print *, name(1) ! Output: 'F'অ্যারে:
- অ্যারেগুলির উপাদানগুলি ইনডেক্সিং করে অ্যাক্সেস করা হয়, তবে ইনডেক্স ১-ভিত্তিক বা ০-ভিত্তিক হতে পারে, যা নির্ভর করে ডেটা টাইপের ওপর।
উদাহরণ:
integer, dimension(5) :: arr arr = (/1, 2, 3, 4, 5/) print *, arr(2) ! Output: 2
৪. ডাইনামিক প্রকৃতি
স্ট্রিং:
- ফোরট্রানে স্ট্রিং-এর দৈর্ঘ্য ফিক্সড থাকে, তবে আপনি ডাইনামিক স্ট্রিং তৈরি করতে পারেন, কিন্তু এটি সাধারণত কম ব্যবহৃত হয়।
- স্ট্রিংটি নির্দিষ্ট দৈর্ঘ্যের ক্যারেক্টারের সমষ্টি হিসেবে ব্যবহৃত হয়।
উদাহরণ:
character(len=50) :: dynamic_string dynamic_string = "This is a dynamic string."অ্যারে:
- ফোরট্রান-এ অ্যারে ডাইনামিক হতে পারে, যার আকার প্রোগ্রাম চলাকালীন সময় পরিবর্তিত হতে পারে। এটি
allocateএবংdeallocateকমান্ডের মাধ্যমে মেমোরি বরাদ্দ এবং মুক্ত করা হয়।
উদাহরণ:
integer, allocatable :: arr(:) allocate(arr(10)) ! Dynamically allocate an array of size 10 arr = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/)- ফোরট্রান-এ অ্যারে ডাইনামিক হতে পারে, যার আকার প্রোগ্রাম চলাকালীন সময় পরিবর্তিত হতে পারে। এটি
৫. কার্যকারিতা
স্ট্রিং:
- স্ট্রিং শুধুমাত্র ক্যারেক্টার ডেটা ধারণ করতে পারে, যা একটি নির্দিষ্ট দৈর্ঘ্যে থাকে এবং এটিতে ক্যারেক্টারের ওপর অপারেশন চালানো যায়, যেমন স্ট্রিং কনক্যাটেনেশন বা সাবস্ট্রিং এক্সট্রাকশন।
উদাহরণ:
character(len=10) :: str1, str2 str1 = "Hello" str2 = "World" str1 = trim(adjustl(str1)) // " " // trim(adjustl(str2)) print *, str1 ! Output: "Hello World"অ্যারে:
- অ্যারে একাধিক ডেটা টাইপ ধারণ করতে পারে এবং এর মানের ওপর গাণিতিক অপারেশন করা যেতে পারে (যেমন অ্যারে যোগ, গুণ)।
উদাহরণ:
integer, dimension(5) :: arr1, arr2, result arr1 = (/1, 2, 3, 4, 5/) arr2 = (/5, 4, 3, 2, 1/) result = arr1 + arr2 ! Array addition
৬. প্রধান পার্থক্যগুলো সংক্ষেপে
| বৈশিষ্ট্য | স্ট্রিং (String) | অ্যারে (Array) |
|---|---|---|
| ডেটা টাইপ | ক্যারেক্টার টাইপ | একাধিক ডেটা টাইপ হতে পারে |
| ইনডেক্সিং | ১-ভিত্তিক ইনডেক্সিং | ১-ভিত্তিক বা ০-ভিত্তিক ইনডেক্সিং |
| ব্যবহার | টেক্সট বা চরিত্র ধারণ | একাধিক সংখ্যামূলক বা অন্য ধরনের ডেটা |
| ডাইনামিক | সাধারণত স্থির দৈর্ঘ্য | ডাইনামিক আকার হতে পারে (allocate) |
| কার্যকারিতা | টেক্সট ম্যানিপুলেশন (কনক্যাটেনেশন, সাবস্ট্রিং) | গাণিতিক অপারেশন (যোগ, গুণ, বিভাজন) |
উপসংহার
স্ট্রিং এবং অ্যারে ফোরট্রান প্রোগ্রামিংয়ে ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। স্ট্রিং মূলত ক্যারেক্টার ডেটার জন্য ব্যবহৃত হয়, যেখানে অ্যারে সাধারণত সংখ্যা বা একাধিক ডেটা টাইপের উপাদান ধারণ করতে ব্যবহৃত হয়। অ্যারে সাধারণত গাণিতিক বা লজিক্যাল অপারেশনের জন্য ব্যবহৃত হয়, আর স্ট্রিং সাধারণত টেক্সট ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
Read more